nginx编译安装及常用参数详解 您所在的位置:网站首页 详解 nginx location ~ */jscss$ 什么意思 nginx编译安装及常用参数详解

nginx编译安装及常用参数详解

2023-01-15 07:04| 来源: 网络整理| 查看: 265

nginx编译安装及常用参数详解

2023-01-13 19:57焱黎 Nginx

这篇文章主要介绍了nginx编译安装及常用参数详解,一种是基于ansible role实现编译安装nginx以及编译安装参数详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1 基于ansible role实现编译安装nginx

利用ansible控制端10.0.0.8机器,在被控制端10.0.0.18上部署nginx

首先打通ansible控制端与被控制端的基于key验证

? 1 2 3 4 5 [root@ansible-rocky ~]$ ssh-copy-id 10.0.0.18 [root@ansible-rocky ~]$ ssh 10.0.0.18 Last login: Wed Jan 11 12:18:28 2023 from 10.0.0.8 [root@rocky8 ~]$ hostname -I 10.0.0.18

然后创建nginx项目目录实现基于role的部署任务

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 #nginx role项目目录总览 [root@ansible-rocky opt]$ tree /opt /opt ├── hosts_nginx ├── nginx_role.yml └── roles     └── nginx         ├── handlers         │   └── main.yml         ├── tasks         │   └── main.yml         └── templates             ├── nginx.conf.j2             └── nginx.service.j2   #task文件 [root@ansible-rocky roles]$ cat nginx/tasks/main.yml - name: add group nginx   group: name=nginx system=yes gid=80   - name: add user nginx   user: name=nginx group=nginx uid=80 system=yes shell="/sbin/nologin" create_home=no   - name: install dependent package   yum: name={{item}} state=latest   loop:     - gcc     - make     - pcre-devel     - openssl-devel     - zlib-devel     - perl-ExtUtils-Embed   - name: get nginx source   unarchive:     src: "{{ url }}"     dest: "/usr/local/src"     remote_src: yes   - name: compile and install   shell:     cmd: "./configure --prefix={{install_dir}} --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module && make && make install"     chdir: "/usr/local/src/nginx-{{ version }}"     creates: "{{install_dir}}/sbin/nginx"   - name: config file   template:     src: nginx.conf.j2     dest: "{{install_dir}}/conf/nginx.conf"     owner: nginx     group: nginx   notify: restart service   tags:     - config   - name: create directory   file:     path: "{{install_dir}}/conf/conf.d"     state: directory     owner: nginx     group: nginx   - name: change install directory owner   file:     path: "{{install_dir}}"     owner: nginx     group: nginx     recurse: yes   - name: copy service file   template:     src: nginx.service.j2     dest: "/lib/systemd/system/nginx.service"   - name: check config   shell:     cmd: "{{install_dir}}/sbin/nginx -t"   register: check_nginx_config   changed_when:     - check_nginx_config.stdout.find('successful')     - false   - name: start service   systemd:     daemon_reload: yes     name: nginx.service     state: started     enabled: yes        #创建handler文件 [root@ansible-rocky roles]$ cat nginx/handlers/main.yml - name: restart service   service:     name: nginx     state: restarted   #装备两个template文件 [root@ansible-rocky roles]$ cat nginx/templates/nginx.conf.j2 user nginx; worker_processes  {{ ansible_processor_vcpus*2 }}; events {     worker_connections  1024; } http {     include       mime.types;     default_type  application/octet-stream;     log_format  access_json '{"@timestamp":"$time_iso8601",'         '"host":"$server_addr",'         '"clientip":"$remote_addr",'         '"size":$body_bytes_sent,'         '"responsetime":$request_time,'         '"upstreamtime":"$upstream_response_time",'         '"upstreamhost":"$upstream_addr",'         '"http_host":"$host",'         '"uri":"$uri",'         '"xff":"$http_x_forwarded_for",'         '"referer":"$http_referer",'         '"tcp_xff":"$proxy_protocol_addr",'         '"http_user_agent":"$http_user_agent",'         '"status":"$status"}';     # logging                                                                                              access_log {{install_dir}}/logs/access-json.log access_json;     error_log {{install_dir}}/logs/error.log warn;       keepalive_timeout  65;     include {{install_dir}}/conf/conf.d/*.conf; } [root@ansible-rocky roles]$ cat nginx/templates/nginx.service.j2 [Unit] Description=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target   [Service] Type=forking PIDFile={{install_dir}}/logs/nginx.pid ExecStartPre=/bin/rm -f {{install_dir}}/logs/nginx.pid ExecStartPre={{install_dir}}/sbin/nginx -t ExecStart={{install_dir}}/sbin/nginx ExecReload=/bin/kill -s HUP \$MAINPID KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true                                                                                        LimitNOFILE=100000   [Install] WantedBy=multi-user.target   #在hosts文件中定义wensrvs需要的变量 [root@ansible-rocky opt]$ cat hosts_nginx [websrvs] 10.0.0.18   [websrvs:vars] version="1.22.1" url="http://nginx.org/download/nginx-{{ version }}.tar.gz" install_dir="/apps/nginx"     #在playbook中调用角色 [root@ansible-rocky opt]$ cat nginx_role.yml - hosts: websrvs   remote_user: root     roles:     - nginx      #运行playbook [root@ansible-rocky opt]$ ansible-playbook -i hosts_nginx nginx_role.yml   PLAY [websrvs] ****************************************************************************************   TASK [Gathering Facts] ******************************************************************************** ok: [10.0.0.18]   TASK [nginx : add group nginx] ************************************************************************ changed: [10.0.0.18]   TASK [nginx : add user nginx] ************************************************************************* changed: [10.0.0.18]   TASK [nginx : install dependent package] ************************************************************** changed: [10.0.0.18] => (item=gcc) ok: [10.0.0.18] => (item=make) changed: [10.0.0.18] => (item=pcre-devel) changed: [10.0.0.18] => (item=openssl-devel) ok: [10.0.0.18] => (item=zlib-devel) changed: [10.0.0.18] => (item=perl-ExtUtils-Embed)   TASK [nginx : get nginx source] *********************************************************************** changed: [10.0.0.18]   TASK [nginx : compile and install] ******************************************************************** changed: [10.0.0.18]   TASK [nginx : config file] **************************************************************************** changed: [10.0.0.18]   TASK [nginx : create directory] *********************************************************************** changed: [10.0.0.18]   TASK [nginx : change install directory owner] ********************************************************* changed: [10.0.0.18]   TASK [nginx : copy service file] ********************************************************************** changed: [10.0.0.18]   TASK [nginx : check config] *************************************************************************** ok: [10.0.0.18]   TASK [nginx : start service] ************************************************************************** changed: [10.0.0.18]   RUNNING HANDLER [nginx : restart service] ************************************************************* changed: [10.0.0.18]   PLAY RECAP ******************************************************************************************** 10.0.0.18                  : ok=13   changed=11   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在被控制端检查是否安装完成

2 编译安装参数详解

编译安装参数示例:

? 1 2 3 4 5 6 7 8 9 10 11 12 ./configure --prefix={{install_dir}} \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module

在编译安装参数中--with开头的选项默认是禁用的,想要使用的话就需要在编译的时候加上;without开头的选项默认是开启的,不想要启用此模块的话就需要在编译的时候加上。

通用配置选项参数:

选项 解释说明 --prefix= Nginx安装的根路径,所有其它路径都要依赖该选项 --sbin-path= 指定nginx二进制文件的路径,没指定的话 这个路径依赖选项 --conf-path= 命令行未指定配置文件,将会通过这里指定的路径加载配置文件 --error-log-path= 写入错误日志文件地址,默认值:/logs/error.log。安装后,可以使用 nginx.conf 中的 error_log 指令更改。 --pid-path= nginx master进程pid写入的文件位置,默认值:/logs/nginx.pid。安装后,可以使用 nginx.conf 中的 pid 指令更改。 --lock-path= 共享存储器互斥锁文件路径 --user= nginx 运行用户。默认值:nobody。安装后,可以使用 nginx.conf 中的 user 指令更改。 --group= nginx 运行组。默认值:--user 指定的值。安装后,可以使用 nginx.conf 中的 user 指令更改。

默认开启的模块

选项 解释说明 --without-http_gzip_module 禁用 ngx_http_gzip_module 模块 --without-http_userid_module 禁用 ngx_http_userid_module 模块,该模块设置适用于客户端标识的 cookie --without-http_access_module 禁用 ngx_http_access_module 模块,该模块允许限制对某些客户端地址的访问 --without-http_rewrite_module 禁用 URL 转发(rewrite) --without-http_proxy_module 禁用 HTTP 服务器代理(proxy)模块 --without-http-cache 禁用 HTTP 缓存

默认未开启模块

选项 解释说明 --with-http_ssl_module 启用 HTTPS 协议支持,需要 OpenSSL 库。默认情况下未构建此模块 --with-http_v2_module 启用 HTTP/2 协议支持。默认情况下未构建此模块。 --with-http_realip_module 启用 ngx_http_realip_module 模块的功能,该模块将客户端地址更改为在指定的 "header " 字段中发送的地址。默认情况下未构建此模块 --with-http_sub_module 启用 ngx_http_sub_module 模块,该模块通过将一个指定的字符串替换为另一个指定的字符串来修改响应。默认情况下未构建此模块 --with-http_gzip_static_module 启用 ngx_http_gzip_static_module 模块,该模块支持发送扩展名为 “.gz” 的预压缩文件,而不是常规文件。默认情况下未构建此模块 --with-http_auth_request_module 启用 ngx_http_auth_request_module 模块,该模块基于子请求的结果实现客户端授权。默认情况下未构建此模块 --with-http_stub_status_module 启用 ngx_http_stub_status_module 模块,该模块提供对基本状态信息的访问。默认情况下未构建此模块 --add-module=path 启用外部模块 --add-dynamic-module=path 启用外部动态模块 --modules-path=path nginx 动态模块的目录。默认值:/modules目录

perl模块相关选项参数

选项 解释说明 --without-pcre 禁用PCRE库 --with-pcre 强制使用PCRE库

邮件模块相关配置选项参数

选项 解释说明 --with-mail 激活POP3/IMAP4/SMTP代理模块,默认未激活 --with-mail_ssl_module 允许ngx_mail_ssl_module模块这个模块使得POP3/IMAP/SMTP可以使用SSL/TLS.配置已经定义了HTTP SSL模块,但是不支持客户端证书检测 --without-mail_pop3_module 启用mail模块后,单独禁用pop3模块 --without-mail_imap_module 启用mail模块后,单独禁用imap模块 --without-mail_smtp_module 启用mail模块后,单独禁用smtp模块 --without-http 完全禁用http模块,如果只想支持mall,可以使用此项设置 --with-openssl=DIR 设定OpenSSL库文件路径

stream模块相关参数

选项 解释说明 --with-stream 开启stream模块 --with-stream_ssl_module 启用 stream 模块的 SSL/TLS 协议支持。构建和运行此模块需要 OpenSSL 库。默认情况下未构建此模块 --with-stream_realip_module 启用 ngx_stream_realip_module 模块的功能,该模块将客户端地址更改为 PROXY 协议标头中发送的地址。默认情况下未构建此模块 --without-stream_access_module 禁用 ngx_stream_access_module 模块,该模块允许限制对某些客户端地址的访问

原文链接:https://www.cnblogs.com/yan-linux/archive/2023/01/11/17043491.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有